package com.hera.process.config.rest.delegate;

import java.util.List;

import com.hera.base.util.FiltroDTO;
import com.hera.process.form.domain.Dynaform;
import com.hera.process.form.domain.DynaformField;
import com.hera.process.form.domain.DynaformStage;
import com.hera.process.form.domain.FieldOption;
import com.hera.process.form.domain.FormField;
import com.hera.process.workflow.domain.Stage;

public interface FormDelegate {

	//////////////////////DYNAFORM //////////////////////////////////////////////
	public List<Dynaform> findAllDynaforms(FiltroDTO filtroDTO);
	public Dynaform createDynaform(Dynaform dynaform);
	public Dynaform updateDynaform(Dynaform dynaform);
	public void deleteDynaform(Dynaform dynaform);
	public List<FormField> findByDynaForm(FiltroDTO filtro);
	public List<Dynaform> findGridFormByIdProcess(Dynaform dynaform);
	
	//////////////////////DYNAFORMFIELD //////////////////////////////////////////////
	public List<DynaformField> findAllDynaformsfield(FiltroDTO filtroDTO);
	public DynaformField createDynaformfield(DynaformField dynaformfield);
	public DynaformField updateDynaformdield(DynaformField dynaformfield);
	public DynaformField updateDynaformfieldwithFormfield(DynaformField dynaformfield);
	public void deleteDynaformfield(DynaformField dynaformfield);
	public List<DynaformField> findAllByDynaFormField(FiltroDTO filtroDTO);
	public List<DynaformField> findAllDynaFormFieldByIdDynaForm(FiltroDTO filtro);
	
	//////////////////////DYNAFORM STAGE////////////////////////////////////////
	public List<DynaformStage> findAllDynaformStages(FiltroDTO filtroDTO);
	public DynaformStage createDynaformStage(DynaformStage dynaformStage);
	public DynaformStage updateDynaformStage(DynaformStage dynaformStage);
	public void deleteDynaformStage(DynaformStage dynaformStage);
	public List<DynaformStage> findAllDynaformStagesByStage(Stage stage);
	
	//////////////////////FIELDOPTION////////////////////////////////////////
	public List<FieldOption> findAllFieldOptions(FiltroDTO filtroDTO);
	public FieldOption createFieldOption(FieldOption fieldoption);
	public FieldOption updateFieldOption(FieldOption fieldoption);
	public void deleteFieldOption(FieldOption fieldoption);
	
	//////////////////////FORMFIELD////////////////////////////////////////
	public List<FormField> findAllFormFieldByDynaForm(Long	 idDynaForm);
	public List<FormField> findAllFormFields(FiltroDTO filtroDTO);
	public FormField createFormField(FormField formfield);
	public FormField updateFormField(FormField formfield);
	public void deleteFormField(FormField formfield);
	public List<FormField> findAllFormNoAsig(Dynaform dynaform);
	public List<FormField> findFormFieldByIdProcess(Dynaform dynaform);
	public List<FormField> findFormFieldNoAsignado(Dynaform dynaform);
	
	
}
